package mx.gob.imss.reiman.clientes.model;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;

/**
 * 
 * @author Alberto Dzul Calvillo
 * @version 1.0
 * 
 */
public class Componente implements Serializable {
	private static final long serialVersionUID = 1L;
	private String id;
	private String cveTipoComponente;
	private String stpFechaCaducidad = "";
	private String cveAnticoagulante = "";
	private String canComponente = "";
	private String folioUnidadOrigen = "";
	private String cvePresupuestalOrigen = "";
	private String cveDevolucion = "";
	private List<String> cveMotivoSalidaAlmacen;

	public Componente() {
		super();
		this.id = "0";
		this.cveTipoComponente = "";
		this.stpFechaCaducidad = "";
		this.cveAnticoagulante = "";
		this.canComponente = "";
		this.folioUnidadOrigen = "";
		this.cvePresupuestalOrigen = "";
		this.cveDevolucion = "";
		this.cveMotivoSalidaAlmacen = new ArrayList<String>();
	}

	public Componente(String id) {
		this();
		this.id = id;
	}

	public Componente(String id, String cveTipoComponente,
			String stpFechaCaducidad, String cveAnticoagulante,
			String canComponente, String folioUnidadOrigen,
			String cvePresupuestalOrigen, String cveDevolucion,
			List<String> cveMotivoSalidaAlmacen) {
		super();
		this.id = id;
		this.cveTipoComponente = cveTipoComponente;
		this.stpFechaCaducidad = stpFechaCaducidad;
		this.cveAnticoagulante = cveAnticoagulante;
		this.canComponente = canComponente;
		this.folioUnidadOrigen = folioUnidadOrigen;
		this.cvePresupuestalOrigen = cvePresupuestalOrigen;
		this.cveDevolucion = cveDevolucion;
		this.cveMotivoSalidaAlmacen = cveMotivoSalidaAlmacen;
	}

	public String getId() {
		return id;
	}

	public void setId(String id) {
		this.id = id;
	}

	public String getCveTipoComponente() {
		return cveTipoComponente;
	}

	public void setCveTipoComponente(String cveTipoComponente) {
		this.cveTipoComponente = cveTipoComponente;
	}

	public String getStpFechaCaducidad() {
		return stpFechaCaducidad;
	}

	public void setStpFechaCaducidad(String stpFechaCaducidad) {
		this.stpFechaCaducidad = stpFechaCaducidad;
	}

	public String getCveAnticoagulante() {
		return cveAnticoagulante;
	}

	public void setCveAnticoagulante(String cveAnticoagulante) {
		this.cveAnticoagulante = cveAnticoagulante;
	}

	public String getCanComponente() {
		return canComponente;
	}

	public void setCanComponente(String canComponente) {
		this.canComponente = canComponente;
	}

	public String getFolioUnidadOrigen() {
		return folioUnidadOrigen;
	}

	public void setFolioUnidadOrigen(String folioUnidadOrigen) {
		this.folioUnidadOrigen = folioUnidadOrigen;
	}

	public String getCvePresupuestalOrigen() {
		return cvePresupuestalOrigen;
	}

	public void setCvePresupuestalOrigen(String cvePresupuestalOrigen) {
		this.cvePresupuestalOrigen = cvePresupuestalOrigen;
	}

	public String getCveDevolucion() {
		return cveDevolucion;
	}

	public void setCveDevolucion(String cveDevolucion) {
		this.cveDevolucion = cveDevolucion;
	}

	public List<String> getCveMotivoSalidaAlmacen() {
		return cveMotivoSalidaAlmacen;
	}

	public void setCveMotivoSalidaAlmacen(List<String> cveMotivoSalidaAlmacen) {
		this.cveMotivoSalidaAlmacen = cveMotivoSalidaAlmacen;
	}

	@Override
	public String toString() {
		return "Componente [id=" + id + ", cveTipoComponente="
				+ cveTipoComponente + ", stpFechaCaducidad="
				+ stpFechaCaducidad + ", cveAnticoagulante="
				+ cveAnticoagulante + ", canComponente=" + canComponente
				+ ", folioUnidadOrigen=" + folioUnidadOrigen
				+ ", cvePresupuestalOrigen=" + cvePresupuestalOrigen
				+ ", cveDevolucion=" + cveDevolucion
				+ ", cveMotivoSalidaAlmacen=" + cveMotivoSalidaAlmacen + "]";
	}

	@Override
	public int hashCode() {
		final int prime = 31;
		int result = 1;
		result = prime * result
				+ ((canComponente == null) ? 0 : canComponente.hashCode());
		result = prime
				* result
				+ ((cveAnticoagulante == null) ? 0 : cveAnticoagulante
						.hashCode());
		result = prime * result
				+ ((cveDevolucion == null) ? 0 : cveDevolucion.hashCode());
		result = prime
				* result
				+ ((cveMotivoSalidaAlmacen == null) ? 0
						: cveMotivoSalidaAlmacen.hashCode());
		result = prime
				* result
				+ ((cvePresupuestalOrigen == null) ? 0 : cvePresupuestalOrigen
						.hashCode());
		result = prime
				* result
				+ ((cveTipoComponente == null) ? 0 : cveTipoComponente
						.hashCode());
		result = prime
				* result
				+ ((folioUnidadOrigen == null) ? 0 : folioUnidadOrigen
						.hashCode());
		result = prime * result + ((id == null) ? 0 : id.hashCode());
		result = prime
				* result
				+ ((stpFechaCaducidad == null) ? 0 : stpFechaCaducidad
						.hashCode());
		return result;
	}

	@Override
	public boolean equals(Object obj) {
		if (this == obj) {
			return true;
		}
		if (obj == null) {
			return false;
		}
		if (!(obj instanceof Componente)) {
			return false;
		}
		Componente other = (Componente) obj;
		if (canComponente == null) {
			if (other.canComponente != null) {
				return false;
			}
		} else if (!canComponente.equals(other.canComponente)) {
			return false;
		}
		if (cveAnticoagulante == null) {
			if (other.cveAnticoagulante != null) {
				return false;
			}
		} else if (!cveAnticoagulante.equals(other.cveAnticoagulante)) {
			return false;
		}
		if (cveDevolucion == null) {
			if (other.cveDevolucion != null) {
				return false;
			}
		} else if (!cveDevolucion.equals(other.cveDevolucion)) {
			return false;
		}
		if (cveMotivoSalidaAlmacen == null) {
			if (other.cveMotivoSalidaAlmacen != null) {
				return false;
			}
		} else if (!cveMotivoSalidaAlmacen.equals(other.cveMotivoSalidaAlmacen)) {
			return false;
		}
		if (cvePresupuestalOrigen == null) {
			if (other.cvePresupuestalOrigen != null) {
				return false;
			}
		} else if (!cvePresupuestalOrigen.equals(other.cvePresupuestalOrigen)) {
			return false;
		}
		if (cveTipoComponente == null) {
			if (other.cveTipoComponente != null) {
				return false;
			}
		} else if (!cveTipoComponente.equals(other.cveTipoComponente)) {
			return false;
		}
		if (folioUnidadOrigen == null) {
			if (other.folioUnidadOrigen != null) {
				return false;
			}
		} else if (!folioUnidadOrigen.equals(other.folioUnidadOrigen)) {
			return false;
		}
		if (id == null) {
			if (other.id != null) {
				return false;
			}
		} else if (!id.equals(other.id)) {
			return false;
		}
		if (stpFechaCaducidad == null) {
			if (other.stpFechaCaducidad != null) {
				return false;
			}
		} else if (!stpFechaCaducidad.equals(other.stpFechaCaducidad)) {
			return false;
		}
		return true;
	}
}